<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://ns.iringtools.org/library" elementFormDefault="qualified" targetNamespace="http://ns.iringtools.org/library" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="DataDictionary">
    <xs:sequence>
      <xs:element minOccurs="0" name="dataObjects" nillable="true" type="tns:ArrayOfDataObject" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataDictionary" nillable="true" type="tns:DataDictionary" />
  <xs:complexType name="ArrayOfDataObject">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="DataObject" nillable="true" type="tns:DataObject" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfDataObject" nillable="true" type="tns:ArrayOfDataObject" />
  <xs:complexType name="DataObject">
    <xs:sequence>
      <xs:element minOccurs="0" name="dataProperties" nillable="true" type="tns:ArrayOfDataProperty" />
      <xs:element minOccurs="0" name="dataRelationships" nillable="true" type="tns:ArrayOfDataRelationship" />
      <xs:element minOccurs="0" name="objectName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="objectNamespace" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataObject" nillable="true" type="tns:DataObject" />
  <xs:complexType name="ArrayOfDataProperty">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="DataProperty" nillable="true" type="tns:DataProperty" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfDataProperty" nillable="true" type="tns:ArrayOfDataProperty" />
  <xs:complexType name="DataProperty">
    <xs:sequence>
      <xs:element minOccurs="0" name="dataLength" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="dataType" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="isPropertyKey" type="xs:boolean" />
      <xs:element minOccurs="0" name="isRequired" type="xs:boolean" />
      <xs:element minOccurs="0" name="propertyName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataProperty" nillable="true" type="tns:DataProperty" />
  <xs:complexType name="ArrayOfDataRelationship">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="DataRelationship" nillable="true" type="tns:DataRelationship" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfDataRelationship" nillable="true" type="tns:ArrayOfDataRelationship" />
  <xs:complexType name="DataRelationship">
    <xs:sequence>
      <xs:element minOccurs="0" name="cardinality" type="tns:Cardinality" />
      <xs:element minOccurs="0" name="graphProperty" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="relatedObject" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataRelationship" nillable="true" type="tns:DataRelationship" />
  <xs:simpleType name="Cardinality">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OneToMany" />
      <xs:enumeration value="ManyToOne" />
      <xs:enumeration value="OneToOne" />
      <xs:enumeration value="ManyToMany" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="Cardinality" nillable="true" type="tns:Cardinality" />
  <xs:complexType name="DatabaseDictionary">
    <xs:sequence>
      <xs:element name="connectionString" nillable="true" type="xs:string" />
      <xs:element name="provider" type="tns:Provider" />
      <xs:element minOccurs="0" name="tables" nillable="true" type="tns:ArrayOfTable" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DatabaseDictionary" nillable="true" type="tns:DatabaseDictionary" />
  <xs:simpleType name="Provider">
    <xs:restriction base="xs:string">
      <xs:enumeration value="MsSql2000" />
      <xs:enumeration value="MsSql2005" />
      <xs:enumeration value="MsSql2008" />
      <xs:enumeration value="MySql3" />
      <xs:enumeration value="MySql4" />
      <xs:enumeration value="MySql5" />
      <xs:enumeration value="Oracle8i" />
      <xs:enumeration value="Oracle9i" />
      <xs:enumeration value="Oracle10g" />
      <xs:enumeration value="OracleLite" />
      <xs:enumeration value="PostgresSql81" />
      <xs:enumeration value="PostgresSql82" />
      <xs:enumeration value="SqLite" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="Provider" nillable="true" type="tns:Provider" />
  <xs:complexType name="ArrayOfTable">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Table" nillable="true" type="tns:Table" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfTable" nillable="true" type="tns:ArrayOfTable" />
  <xs:complexType name="Table">
    <xs:sequence>
      <xs:element minOccurs="0" name="associations" nillable="true" type="tns:ArrayOfAssociation" />
      <xs:element minOccurs="0" name="columns" nillable="true" type="tns:ArrayOfColumn" />
      <xs:element minOccurs="0" name="entityName" nillable="true" type="xs:string" />
      <xs:element name="keys" nillable="true" type="tns:ArrayOfKey" />
      <xs:element name="tableName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Table" nillable="true" type="tns:Table" />
  <xs:complexType name="ArrayOfAssociation">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Association" nillable="true" type="tns:Association" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfAssociation" nillable="true" type="tns:ArrayOfAssociation" />
  <xs:complexType name="Association">
    <xs:sequence>
      <xs:element name="associatedTableName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Association" nillable="true" type="tns:Association" />
  <xs:complexType name="OneToManyAssociation">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Association">
        <xs:sequence>
          <xs:element minOccurs="0" name="associatedColumnName" nillable="true" type="xs:string" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OneToManyAssociation" nillable="true" type="tns:OneToManyAssociation" />
  <xs:complexType name="ManyToOneAssociation">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Association">
        <xs:sequence>
          <xs:element minOccurs="0" name="columnName" nillable="true" type="xs:string" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ManyToOneAssociation" nillable="true" type="tns:ManyToOneAssociation" />
  <xs:complexType name="OneToOneAssociation">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Association">
        <xs:sequence>
          <xs:element name="constrained" type="xs:boolean" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OneToOneAssociation" nillable="true" type="tns:OneToOneAssociation" />
  <xs:complexType name="ArrayOfColumn">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Column" nillable="true" type="tns:Column" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfColumn" nillable="true" type="tns:ArrayOfColumn" />
  <xs:complexType name="Column">
    <xs:sequence>
      <xs:element name="columnName" nillable="true" type="xs:string" />
      <xs:element name="columnType" type="tns:ColumnType" />
      <xs:element minOccurs="0" name="propertyName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Column" nillable="true" type="tns:Column" />
  <xs:simpleType name="ColumnType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Boolean" />
      <xs:enumeration value="Byte" />
      <xs:enumeration value="Char" />
      <xs:enumeration value="DateTime" />
      <xs:enumeration value="Double" />
      <xs:enumeration value="Int16" />
      <xs:enumeration value="Int32" />
      <xs:enumeration value="Int64" />
      <xs:enumeration value="String" />
      <xs:enumeration value="TimeSpan" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="ColumnType" nillable="true" type="tns:ColumnType" />
  <xs:complexType name="ArrayOfKey">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Key" nillable="true" type="tns:Key" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfKey" nillable="true" type="tns:ArrayOfKey" />
  <xs:complexType name="Key">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Column">
        <xs:sequence>
          <xs:element name="keyType" type="tns:KeyType" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Key" nillable="true" type="tns:Key" />
  <xs:simpleType name="KeyType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="assigned" />
      <xs:enumeration value="foreign" />
      <xs:enumeration value="identity" />
      <xs:enumeration value="native" />
      <xs:enumeration value="sequence" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="KeyType" nillable="true" type="tns:KeyType" />
</xs:schema>